BearerStrategy.validate   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 8
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
1
import { Strategy } from 'passport-http-bearer';
2
import { PassportStrategy } from '@nestjs/passport';
3
import { Injectable, UnauthorizedException, Inject } from '@nestjs/common';
4
import { IUserRepository } from 'src/Domain/User/Repository/IUserRepository';
5
import { UserAuthView } from './UserAuthView';
6
7
@Injectable()
8
export class BearerStrategy extends PassportStrategy(Strategy, 'bearer') {
9
  constructor(
10
    @Inject('IUserRepository')
11
    private readonly userRepository: IUserRepository
12
  ) {
13
    super();
14
  }
15
16
  public async validate(token: string): Promise<UserAuthView> {
17
    const user = await this.userRepository.findOneByApiToken(token);
18
    if (!user) {
19
      throw new UnauthorizedException();
20
    }
21
22
    return new UserAuthView(user.getId(), user.getRole());
23
  }
24
}
25